﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using PlanificadorDeEventos.Models;
using PlanificadorDeEventos.Comun;
using PlanificadorDeEventos.Repositorios;
using PlanificadorDeEventos.Interfaces;


namespace PlanificadorDeEventos.Repositorios
{

    /// <summary>
    /// Representa el repositorio de eventos
    /// </summary>
    public class RepositorioEventos : RepositorioGenerico<Evento>, IRepositorioEventos
    {
        public RepositorioEventos(ModelContext context)
            : base(context) 
        { 
        }

        /// <summary>
        /// Obtiene una entidad por su nombre
        /// </summary>
        /// <param name="nombre">El nombre de la operacion.</param>
        /// <returns></returns>
        public Evento ObtenerPorNombre(string nombre)
        {
            return this.dbSet.SingleOrDefault(u => u.Nombre.Equals(nombre, StringComparison.CurrentCultureIgnoreCase));
        }

        /// <summary>
        /// Actualiza las propiedades de un evento
        /// </summary>
        /// <param name="evento">Es el evento a actualizar</param>
        public void ActualizarEvento(Evento evento) 
        {
            Evento oldEvent = dbSet.SingleOrDefault(e=>e.ID.Equals(evento.ID));
            oldEvent.Nombre = evento.Nombre;
            oldEvent.Description = evento.Description;
            oldEvent.Date = evento.Date;
            oldEvent.EndRegistrationDate = evento.EndRegistrationDate;
            this.context.SaveChanges();
        
        }

    }
}